↳ Prolog
↳ PrologToPiTRSProof
queens_in(Y) → U1(Y, perm_in(.(s(0), .(s(s(0)), .(s(s(s(0))), .(s(s(s(s(0)))), .(s(s(s(s(s(0))))), .(s(s(s(s(s(s(0)))))), .(s(s(s(s(s(s(s(0))))))), .(s(s(s(s(s(s(s(s(0)))))))), [])))))))), Y))
perm_in(.(X, Y), .(V, Res)) → U3(X, Y, V, Res, delete_in(V, .(X, Y), Rest))
delete_in(X, .(F, T), .(F, R)) → U5(X, F, T, R, delete_in(X, T, R))
delete_in(X, .(X, Y), Y) → delete_out(X, .(X, Y), Y)
U5(X, F, T, R, delete_out(X, T, R)) → delete_out(X, .(F, T), .(F, R))
U3(X, Y, V, Res, delete_out(V, .(X, Y), Rest)) → U4(X, Y, V, Res, perm_in(Rest, Res))
perm_in([], []) → perm_out([], [])
U4(X, Y, V, Res, perm_out(Rest, Res)) → perm_out(.(X, Y), .(V, Res))
U1(Y, perm_out(.(s(0), .(s(s(0)), .(s(s(s(0))), .(s(s(s(s(0)))), .(s(s(s(s(s(0))))), .(s(s(s(s(s(s(0)))))), .(s(s(s(s(s(s(s(0))))))), .(s(s(s(s(s(s(s(s(0)))))))), [])))))))), Y)) → U2(Y, safe_in(Y))
safe_in(.(X, Y)) → U6(X, Y, noattack_in(X, Y, s(0)))
noattack_in(X, .(F, T), N) → U8(X, F, T, N, notEq_in(X, F))
notEq_in(s(X), s(Y)) → U15(X, Y, notEq_in(X, Y))
notEq_in(s(X), 0) → notEq_out(s(X), 0)
notEq_in(0, s(X)) → notEq_out(0, s(X))
U15(X, Y, notEq_out(X, Y)) → notEq_out(s(X), s(Y))
U8(X, F, T, N, notEq_out(X, F)) → U9(X, F, T, N, add_in(F, N, FplusN))
add_in(s(X), Y, s(Z)) → U14(X, Y, Z, add_in(X, Y, Z))
add_in(0, X, X) → add_out(0, X, X)
U14(X, Y, Z, add_out(X, Y, Z)) → add_out(s(X), Y, s(Z))
U9(X, F, T, N, add_out(F, N, FplusN)) → U10(X, F, T, N, FplusN, notEq_in(X, FplusN))
U10(X, F, T, N, FplusN, notEq_out(X, FplusN)) → U11(X, F, T, N, FplusN, add_in(X, N, XplusN))
U11(X, F, T, N, FplusN, add_out(X, N, XplusN)) → U12(X, F, T, N, notEq_in(F, XplusN))
U12(X, F, T, N, notEq_out(F, XplusN)) → U13(X, F, T, N, noattack_in(X, T, s(N)))
noattack_in(X, [], N) → noattack_out(X, [], N)
U13(X, F, T, N, noattack_out(X, T, s(N))) → noattack_out(X, .(F, T), N)
U6(X, Y, noattack_out(X, Y, s(0))) → U7(X, Y, safe_in(Y))
safe_in([]) → safe_out([])
U7(X, Y, safe_out(Y)) → safe_out(.(X, Y))
U2(Y, safe_out(Y)) → queens_out(Y)
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
queens_in(Y) → U1(Y, perm_in(.(s(0), .(s(s(0)), .(s(s(s(0))), .(s(s(s(s(0)))), .(s(s(s(s(s(0))))), .(s(s(s(s(s(s(0)))))), .(s(s(s(s(s(s(s(0))))))), .(s(s(s(s(s(s(s(s(0)))))))), [])))))))), Y))
perm_in(.(X, Y), .(V, Res)) → U3(X, Y, V, Res, delete_in(V, .(X, Y), Rest))
delete_in(X, .(F, T), .(F, R)) → U5(X, F, T, R, delete_in(X, T, R))
delete_in(X, .(X, Y), Y) → delete_out(X, .(X, Y), Y)
U5(X, F, T, R, delete_out(X, T, R)) → delete_out(X, .(F, T), .(F, R))
U3(X, Y, V, Res, delete_out(V, .(X, Y), Rest)) → U4(X, Y, V, Res, perm_in(Rest, Res))
perm_in([], []) → perm_out([], [])
U4(X, Y, V, Res, perm_out(Rest, Res)) → perm_out(.(X, Y), .(V, Res))
U1(Y, perm_out(.(s(0), .(s(s(0)), .(s(s(s(0))), .(s(s(s(s(0)))), .(s(s(s(s(s(0))))), .(s(s(s(s(s(s(0)))))), .(s(s(s(s(s(s(s(0))))))), .(s(s(s(s(s(s(s(s(0)))))))), [])))))))), Y)) → U2(Y, safe_in(Y))
safe_in(.(X, Y)) → U6(X, Y, noattack_in(X, Y, s(0)))
noattack_in(X, .(F, T), N) → U8(X, F, T, N, notEq_in(X, F))
notEq_in(s(X), s(Y)) → U15(X, Y, notEq_in(X, Y))
notEq_in(s(X), 0) → notEq_out(s(X), 0)
notEq_in(0, s(X)) → notEq_out(0, s(X))
U15(X, Y, notEq_out(X, Y)) → notEq_out(s(X), s(Y))
U8(X, F, T, N, notEq_out(X, F)) → U9(X, F, T, N, add_in(F, N, FplusN))
add_in(s(X), Y, s(Z)) → U14(X, Y, Z, add_in(X, Y, Z))
add_in(0, X, X) → add_out(0, X, X)
U14(X, Y, Z, add_out(X, Y, Z)) → add_out(s(X), Y, s(Z))
U9(X, F, T, N, add_out(F, N, FplusN)) → U10(X, F, T, N, FplusN, notEq_in(X, FplusN))
U10(X, F, T, N, FplusN, notEq_out(X, FplusN)) → U11(X, F, T, N, FplusN, add_in(X, N, XplusN))
U11(X, F, T, N, FplusN, add_out(X, N, XplusN)) → U12(X, F, T, N, notEq_in(F, XplusN))
U12(X, F, T, N, notEq_out(F, XplusN)) → U13(X, F, T, N, noattack_in(X, T, s(N)))
noattack_in(X, [], N) → noattack_out(X, [], N)
U13(X, F, T, N, noattack_out(X, T, s(N))) → noattack_out(X, .(F, T), N)
U6(X, Y, noattack_out(X, Y, s(0))) → U7(X, Y, safe_in(Y))
safe_in([]) → safe_out([])
U7(X, Y, safe_out(Y)) → safe_out(.(X, Y))
U2(Y, safe_out(Y)) → queens_out(Y)
QUEENS_IN(Y) → U11(Y, perm_in(.(s(0), .(s(s(0)), .(s(s(s(0))), .(s(s(s(s(0)))), .(s(s(s(s(s(0))))), .(s(s(s(s(s(s(0)))))), .(s(s(s(s(s(s(s(0))))))), .(s(s(s(s(s(s(s(s(0)))))))), [])))))))), Y))
QUEENS_IN(Y) → PERM_IN(.(s(0), .(s(s(0)), .(s(s(s(0))), .(s(s(s(s(0)))), .(s(s(s(s(s(0))))), .(s(s(s(s(s(s(0)))))), .(s(s(s(s(s(s(s(0))))))), .(s(s(s(s(s(s(s(s(0)))))))), [])))))))), Y)
PERM_IN(.(X, Y), .(V, Res)) → U31(X, Y, V, Res, delete_in(V, .(X, Y), Rest))
PERM_IN(.(X, Y), .(V, Res)) → DELETE_IN(V, .(X, Y), Rest)
DELETE_IN(X, .(F, T), .(F, R)) → U51(X, F, T, R, delete_in(X, T, R))
DELETE_IN(X, .(F, T), .(F, R)) → DELETE_IN(X, T, R)
U31(X, Y, V, Res, delete_out(V, .(X, Y), Rest)) → U41(X, Y, V, Res, perm_in(Rest, Res))
U31(X, Y, V, Res, delete_out(V, .(X, Y), Rest)) → PERM_IN(Rest, Res)
U11(Y, perm_out(.(s(0), .(s(s(0)), .(s(s(s(0))), .(s(s(s(s(0)))), .(s(s(s(s(s(0))))), .(s(s(s(s(s(s(0)))))), .(s(s(s(s(s(s(s(0))))))), .(s(s(s(s(s(s(s(s(0)))))))), [])))))))), Y)) → U21(Y, safe_in(Y))
U11(Y, perm_out(.(s(0), .(s(s(0)), .(s(s(s(0))), .(s(s(s(s(0)))), .(s(s(s(s(s(0))))), .(s(s(s(s(s(s(0)))))), .(s(s(s(s(s(s(s(0))))))), .(s(s(s(s(s(s(s(s(0)))))))), [])))))))), Y)) → SAFE_IN(Y)
SAFE_IN(.(X, Y)) → U61(X, Y, noattack_in(X, Y, s(0)))
SAFE_IN(.(X, Y)) → NOATTACK_IN(X, Y, s(0))
NOATTACK_IN(X, .(F, T), N) → U81(X, F, T, N, notEq_in(X, F))
NOATTACK_IN(X, .(F, T), N) → NOTEQ_IN(X, F)
NOTEQ_IN(s(X), s(Y)) → U151(X, Y, notEq_in(X, Y))
NOTEQ_IN(s(X), s(Y)) → NOTEQ_IN(X, Y)
U81(X, F, T, N, notEq_out(X, F)) → U91(X, F, T, N, add_in(F, N, FplusN))
U81(X, F, T, N, notEq_out(X, F)) → ADD_IN(F, N, FplusN)
ADD_IN(s(X), Y, s(Z)) → U141(X, Y, Z, add_in(X, Y, Z))
ADD_IN(s(X), Y, s(Z)) → ADD_IN(X, Y, Z)
U91(X, F, T, N, add_out(F, N, FplusN)) → U101(X, F, T, N, FplusN, notEq_in(X, FplusN))
U91(X, F, T, N, add_out(F, N, FplusN)) → NOTEQ_IN(X, FplusN)
U101(X, F, T, N, FplusN, notEq_out(X, FplusN)) → U111(X, F, T, N, FplusN, add_in(X, N, XplusN))
U101(X, F, T, N, FplusN, notEq_out(X, FplusN)) → ADD_IN(X, N, XplusN)
U111(X, F, T, N, FplusN, add_out(X, N, XplusN)) → U121(X, F, T, N, notEq_in(F, XplusN))
U111(X, F, T, N, FplusN, add_out(X, N, XplusN)) → NOTEQ_IN(F, XplusN)
U121(X, F, T, N, notEq_out(F, XplusN)) → U131(X, F, T, N, noattack_in(X, T, s(N)))
U121(X, F, T, N, notEq_out(F, XplusN)) → NOATTACK_IN(X, T, s(N))
U61(X, Y, noattack_out(X, Y, s(0))) → U71(X, Y, safe_in(Y))
U61(X, Y, noattack_out(X, Y, s(0))) → SAFE_IN(Y)
queens_in(Y) → U1(Y, perm_in(.(s(0), .(s(s(0)), .(s(s(s(0))), .(s(s(s(s(0)))), .(s(s(s(s(s(0))))), .(s(s(s(s(s(s(0)))))), .(s(s(s(s(s(s(s(0))))))), .(s(s(s(s(s(s(s(s(0)))))))), [])))))))), Y))
perm_in(.(X, Y), .(V, Res)) → U3(X, Y, V, Res, delete_in(V, .(X, Y), Rest))
delete_in(X, .(F, T), .(F, R)) → U5(X, F, T, R, delete_in(X, T, R))
delete_in(X, .(X, Y), Y) → delete_out(X, .(X, Y), Y)
U5(X, F, T, R, delete_out(X, T, R)) → delete_out(X, .(F, T), .(F, R))
U3(X, Y, V, Res, delete_out(V, .(X, Y), Rest)) → U4(X, Y, V, Res, perm_in(Rest, Res))
perm_in([], []) → perm_out([], [])
U4(X, Y, V, Res, perm_out(Rest, Res)) → perm_out(.(X, Y), .(V, Res))
U1(Y, perm_out(.(s(0), .(s(s(0)), .(s(s(s(0))), .(s(s(s(s(0)))), .(s(s(s(s(s(0))))), .(s(s(s(s(s(s(0)))))), .(s(s(s(s(s(s(s(0))))))), .(s(s(s(s(s(s(s(s(0)))))))), [])))))))), Y)) → U2(Y, safe_in(Y))
safe_in(.(X, Y)) → U6(X, Y, noattack_in(X, Y, s(0)))
noattack_in(X, .(F, T), N) → U8(X, F, T, N, notEq_in(X, F))
notEq_in(s(X), s(Y)) → U15(X, Y, notEq_in(X, Y))
notEq_in(s(X), 0) → notEq_out(s(X), 0)
notEq_in(0, s(X)) → notEq_out(0, s(X))
U15(X, Y, notEq_out(X, Y)) → notEq_out(s(X), s(Y))
U8(X, F, T, N, notEq_out(X, F)) → U9(X, F, T, N, add_in(F, N, FplusN))
add_in(s(X), Y, s(Z)) → U14(X, Y, Z, add_in(X, Y, Z))
add_in(0, X, X) → add_out(0, X, X)
U14(X, Y, Z, add_out(X, Y, Z)) → add_out(s(X), Y, s(Z))
U9(X, F, T, N, add_out(F, N, FplusN)) → U10(X, F, T, N, FplusN, notEq_in(X, FplusN))
U10(X, F, T, N, FplusN, notEq_out(X, FplusN)) → U11(X, F, T, N, FplusN, add_in(X, N, XplusN))
U11(X, F, T, N, FplusN, add_out(X, N, XplusN)) → U12(X, F, T, N, notEq_in(F, XplusN))
U12(X, F, T, N, notEq_out(F, XplusN)) → U13(X, F, T, N, noattack_in(X, T, s(N)))
noattack_in(X, [], N) → noattack_out(X, [], N)
U13(X, F, T, N, noattack_out(X, T, s(N))) → noattack_out(X, .(F, T), N)
U6(X, Y, noattack_out(X, Y, s(0))) → U7(X, Y, safe_in(Y))
safe_in([]) → safe_out([])
U7(X, Y, safe_out(Y)) → safe_out(.(X, Y))
U2(Y, safe_out(Y)) → queens_out(Y)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
QUEENS_IN(Y) → U11(Y, perm_in(.(s(0), .(s(s(0)), .(s(s(s(0))), .(s(s(s(s(0)))), .(s(s(s(s(s(0))))), .(s(s(s(s(s(s(0)))))), .(s(s(s(s(s(s(s(0))))))), .(s(s(s(s(s(s(s(s(0)))))))), [])))))))), Y))
QUEENS_IN(Y) → PERM_IN(.(s(0), .(s(s(0)), .(s(s(s(0))), .(s(s(s(s(0)))), .(s(s(s(s(s(0))))), .(s(s(s(s(s(s(0)))))), .(s(s(s(s(s(s(s(0))))))), .(s(s(s(s(s(s(s(s(0)))))))), [])))))))), Y)
PERM_IN(.(X, Y), .(V, Res)) → U31(X, Y, V, Res, delete_in(V, .(X, Y), Rest))
PERM_IN(.(X, Y), .(V, Res)) → DELETE_IN(V, .(X, Y), Rest)
DELETE_IN(X, .(F, T), .(F, R)) → U51(X, F, T, R, delete_in(X, T, R))
DELETE_IN(X, .(F, T), .(F, R)) → DELETE_IN(X, T, R)
U31(X, Y, V, Res, delete_out(V, .(X, Y), Rest)) → U41(X, Y, V, Res, perm_in(Rest, Res))
U31(X, Y, V, Res, delete_out(V, .(X, Y), Rest)) → PERM_IN(Rest, Res)
U11(Y, perm_out(.(s(0), .(s(s(0)), .(s(s(s(0))), .(s(s(s(s(0)))), .(s(s(s(s(s(0))))), .(s(s(s(s(s(s(0)))))), .(s(s(s(s(s(s(s(0))))))), .(s(s(s(s(s(s(s(s(0)))))))), [])))))))), Y)) → U21(Y, safe_in(Y))
U11(Y, perm_out(.(s(0), .(s(s(0)), .(s(s(s(0))), .(s(s(s(s(0)))), .(s(s(s(s(s(0))))), .(s(s(s(s(s(s(0)))))), .(s(s(s(s(s(s(s(0))))))), .(s(s(s(s(s(s(s(s(0)))))))), [])))))))), Y)) → SAFE_IN(Y)
SAFE_IN(.(X, Y)) → U61(X, Y, noattack_in(X, Y, s(0)))
SAFE_IN(.(X, Y)) → NOATTACK_IN(X, Y, s(0))
NOATTACK_IN(X, .(F, T), N) → U81(X, F, T, N, notEq_in(X, F))
NOATTACK_IN(X, .(F, T), N) → NOTEQ_IN(X, F)
NOTEQ_IN(s(X), s(Y)) → U151(X, Y, notEq_in(X, Y))
NOTEQ_IN(s(X), s(Y)) → NOTEQ_IN(X, Y)
U81(X, F, T, N, notEq_out(X, F)) → U91(X, F, T, N, add_in(F, N, FplusN))
U81(X, F, T, N, notEq_out(X, F)) → ADD_IN(F, N, FplusN)
ADD_IN(s(X), Y, s(Z)) → U141(X, Y, Z, add_in(X, Y, Z))
ADD_IN(s(X), Y, s(Z)) → ADD_IN(X, Y, Z)
U91(X, F, T, N, add_out(F, N, FplusN)) → U101(X, F, T, N, FplusN, notEq_in(X, FplusN))
U91(X, F, T, N, add_out(F, N, FplusN)) → NOTEQ_IN(X, FplusN)
U101(X, F, T, N, FplusN, notEq_out(X, FplusN)) → U111(X, F, T, N, FplusN, add_in(X, N, XplusN))
U101(X, F, T, N, FplusN, notEq_out(X, FplusN)) → ADD_IN(X, N, XplusN)
U111(X, F, T, N, FplusN, add_out(X, N, XplusN)) → U121(X, F, T, N, notEq_in(F, XplusN))
U111(X, F, T, N, FplusN, add_out(X, N, XplusN)) → NOTEQ_IN(F, XplusN)
U121(X, F, T, N, notEq_out(F, XplusN)) → U131(X, F, T, N, noattack_in(X, T, s(N)))
U121(X, F, T, N, notEq_out(F, XplusN)) → NOATTACK_IN(X, T, s(N))
U61(X, Y, noattack_out(X, Y, s(0))) → U71(X, Y, safe_in(Y))
U61(X, Y, noattack_out(X, Y, s(0))) → SAFE_IN(Y)
queens_in(Y) → U1(Y, perm_in(.(s(0), .(s(s(0)), .(s(s(s(0))), .(s(s(s(s(0)))), .(s(s(s(s(s(0))))), .(s(s(s(s(s(s(0)))))), .(s(s(s(s(s(s(s(0))))))), .(s(s(s(s(s(s(s(s(0)))))))), [])))))))), Y))
perm_in(.(X, Y), .(V, Res)) → U3(X, Y, V, Res, delete_in(V, .(X, Y), Rest))
delete_in(X, .(F, T), .(F, R)) → U5(X, F, T, R, delete_in(X, T, R))
delete_in(X, .(X, Y), Y) → delete_out(X, .(X, Y), Y)
U5(X, F, T, R, delete_out(X, T, R)) → delete_out(X, .(F, T), .(F, R))
U3(X, Y, V, Res, delete_out(V, .(X, Y), Rest)) → U4(X, Y, V, Res, perm_in(Rest, Res))
perm_in([], []) → perm_out([], [])
U4(X, Y, V, Res, perm_out(Rest, Res)) → perm_out(.(X, Y), .(V, Res))
U1(Y, perm_out(.(s(0), .(s(s(0)), .(s(s(s(0))), .(s(s(s(s(0)))), .(s(s(s(s(s(0))))), .(s(s(s(s(s(s(0)))))), .(s(s(s(s(s(s(s(0))))))), .(s(s(s(s(s(s(s(s(0)))))))), [])))))))), Y)) → U2(Y, safe_in(Y))
safe_in(.(X, Y)) → U6(X, Y, noattack_in(X, Y, s(0)))
noattack_in(X, .(F, T), N) → U8(X, F, T, N, notEq_in(X, F))
notEq_in(s(X), s(Y)) → U15(X, Y, notEq_in(X, Y))
notEq_in(s(X), 0) → notEq_out(s(X), 0)
notEq_in(0, s(X)) → notEq_out(0, s(X))
U15(X, Y, notEq_out(X, Y)) → notEq_out(s(X), s(Y))
U8(X, F, T, N, notEq_out(X, F)) → U9(X, F, T, N, add_in(F, N, FplusN))
add_in(s(X), Y, s(Z)) → U14(X, Y, Z, add_in(X, Y, Z))
add_in(0, X, X) → add_out(0, X, X)
U14(X, Y, Z, add_out(X, Y, Z)) → add_out(s(X), Y, s(Z))
U9(X, F, T, N, add_out(F, N, FplusN)) → U10(X, F, T, N, FplusN, notEq_in(X, FplusN))
U10(X, F, T, N, FplusN, notEq_out(X, FplusN)) → U11(X, F, T, N, FplusN, add_in(X, N, XplusN))
U11(X, F, T, N, FplusN, add_out(X, N, XplusN)) → U12(X, F, T, N, notEq_in(F, XplusN))
U12(X, F, T, N, notEq_out(F, XplusN)) → U13(X, F, T, N, noattack_in(X, T, s(N)))
noattack_in(X, [], N) → noattack_out(X, [], N)
U13(X, F, T, N, noattack_out(X, T, s(N))) → noattack_out(X, .(F, T), N)
U6(X, Y, noattack_out(X, Y, s(0))) → U7(X, Y, safe_in(Y))
safe_in([]) → safe_out([])
U7(X, Y, safe_out(Y)) → safe_out(.(X, Y))
U2(Y, safe_out(Y)) → queens_out(Y)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
ADD_IN(s(X), Y, s(Z)) → ADD_IN(X, Y, Z)
queens_in(Y) → U1(Y, perm_in(.(s(0), .(s(s(0)), .(s(s(s(0))), .(s(s(s(s(0)))), .(s(s(s(s(s(0))))), .(s(s(s(s(s(s(0)))))), .(s(s(s(s(s(s(s(0))))))), .(s(s(s(s(s(s(s(s(0)))))))), [])))))))), Y))
perm_in(.(X, Y), .(V, Res)) → U3(X, Y, V, Res, delete_in(V, .(X, Y), Rest))
delete_in(X, .(F, T), .(F, R)) → U5(X, F, T, R, delete_in(X, T, R))
delete_in(X, .(X, Y), Y) → delete_out(X, .(X, Y), Y)
U5(X, F, T, R, delete_out(X, T, R)) → delete_out(X, .(F, T), .(F, R))
U3(X, Y, V, Res, delete_out(V, .(X, Y), Rest)) → U4(X, Y, V, Res, perm_in(Rest, Res))
perm_in([], []) → perm_out([], [])
U4(X, Y, V, Res, perm_out(Rest, Res)) → perm_out(.(X, Y), .(V, Res))
U1(Y, perm_out(.(s(0), .(s(s(0)), .(s(s(s(0))), .(s(s(s(s(0)))), .(s(s(s(s(s(0))))), .(s(s(s(s(s(s(0)))))), .(s(s(s(s(s(s(s(0))))))), .(s(s(s(s(s(s(s(s(0)))))))), [])))))))), Y)) → U2(Y, safe_in(Y))
safe_in(.(X, Y)) → U6(X, Y, noattack_in(X, Y, s(0)))
noattack_in(X, .(F, T), N) → U8(X, F, T, N, notEq_in(X, F))
notEq_in(s(X), s(Y)) → U15(X, Y, notEq_in(X, Y))
notEq_in(s(X), 0) → notEq_out(s(X), 0)
notEq_in(0, s(X)) → notEq_out(0, s(X))
U15(X, Y, notEq_out(X, Y)) → notEq_out(s(X), s(Y))
U8(X, F, T, N, notEq_out(X, F)) → U9(X, F, T, N, add_in(F, N, FplusN))
add_in(s(X), Y, s(Z)) → U14(X, Y, Z, add_in(X, Y, Z))
add_in(0, X, X) → add_out(0, X, X)
U14(X, Y, Z, add_out(X, Y, Z)) → add_out(s(X), Y, s(Z))
U9(X, F, T, N, add_out(F, N, FplusN)) → U10(X, F, T, N, FplusN, notEq_in(X, FplusN))
U10(X, F, T, N, FplusN, notEq_out(X, FplusN)) → U11(X, F, T, N, FplusN, add_in(X, N, XplusN))
U11(X, F, T, N, FplusN, add_out(X, N, XplusN)) → U12(X, F, T, N, notEq_in(F, XplusN))
U12(X, F, T, N, notEq_out(F, XplusN)) → U13(X, F, T, N, noattack_in(X, T, s(N)))
noattack_in(X, [], N) → noattack_out(X, [], N)
U13(X, F, T, N, noattack_out(X, T, s(N))) → noattack_out(X, .(F, T), N)
U6(X, Y, noattack_out(X, Y, s(0))) → U7(X, Y, safe_in(Y))
safe_in([]) → safe_out([])
U7(X, Y, safe_out(Y)) → safe_out(.(X, Y))
U2(Y, safe_out(Y)) → queens_out(Y)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
ADD_IN(s(X), Y, s(Z)) → ADD_IN(X, Y, Z)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
ADD_IN(s(X), Y) → ADD_IN(X, Y)
From the DPs we obtained the following set of size-change graphs:
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
NOTEQ_IN(s(X), s(Y)) → NOTEQ_IN(X, Y)
queens_in(Y) → U1(Y, perm_in(.(s(0), .(s(s(0)), .(s(s(s(0))), .(s(s(s(s(0)))), .(s(s(s(s(s(0))))), .(s(s(s(s(s(s(0)))))), .(s(s(s(s(s(s(s(0))))))), .(s(s(s(s(s(s(s(s(0)))))))), [])))))))), Y))
perm_in(.(X, Y), .(V, Res)) → U3(X, Y, V, Res, delete_in(V, .(X, Y), Rest))
delete_in(X, .(F, T), .(F, R)) → U5(X, F, T, R, delete_in(X, T, R))
delete_in(X, .(X, Y), Y) → delete_out(X, .(X, Y), Y)
U5(X, F, T, R, delete_out(X, T, R)) → delete_out(X, .(F, T), .(F, R))
U3(X, Y, V, Res, delete_out(V, .(X, Y), Rest)) → U4(X, Y, V, Res, perm_in(Rest, Res))
perm_in([], []) → perm_out([], [])
U4(X, Y, V, Res, perm_out(Rest, Res)) → perm_out(.(X, Y), .(V, Res))
U1(Y, perm_out(.(s(0), .(s(s(0)), .(s(s(s(0))), .(s(s(s(s(0)))), .(s(s(s(s(s(0))))), .(s(s(s(s(s(s(0)))))), .(s(s(s(s(s(s(s(0))))))), .(s(s(s(s(s(s(s(s(0)))))))), [])))))))), Y)) → U2(Y, safe_in(Y))
safe_in(.(X, Y)) → U6(X, Y, noattack_in(X, Y, s(0)))
noattack_in(X, .(F, T), N) → U8(X, F, T, N, notEq_in(X, F))
notEq_in(s(X), s(Y)) → U15(X, Y, notEq_in(X, Y))
notEq_in(s(X), 0) → notEq_out(s(X), 0)
notEq_in(0, s(X)) → notEq_out(0, s(X))
U15(X, Y, notEq_out(X, Y)) → notEq_out(s(X), s(Y))
U8(X, F, T, N, notEq_out(X, F)) → U9(X, F, T, N, add_in(F, N, FplusN))
add_in(s(X), Y, s(Z)) → U14(X, Y, Z, add_in(X, Y, Z))
add_in(0, X, X) → add_out(0, X, X)
U14(X, Y, Z, add_out(X, Y, Z)) → add_out(s(X), Y, s(Z))
U9(X, F, T, N, add_out(F, N, FplusN)) → U10(X, F, T, N, FplusN, notEq_in(X, FplusN))
U10(X, F, T, N, FplusN, notEq_out(X, FplusN)) → U11(X, F, T, N, FplusN, add_in(X, N, XplusN))
U11(X, F, T, N, FplusN, add_out(X, N, XplusN)) → U12(X, F, T, N, notEq_in(F, XplusN))
U12(X, F, T, N, notEq_out(F, XplusN)) → U13(X, F, T, N, noattack_in(X, T, s(N)))
noattack_in(X, [], N) → noattack_out(X, [], N)
U13(X, F, T, N, noattack_out(X, T, s(N))) → noattack_out(X, .(F, T), N)
U6(X, Y, noattack_out(X, Y, s(0))) → U7(X, Y, safe_in(Y))
safe_in([]) → safe_out([])
U7(X, Y, safe_out(Y)) → safe_out(.(X, Y))
U2(Y, safe_out(Y)) → queens_out(Y)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
NOTEQ_IN(s(X), s(Y)) → NOTEQ_IN(X, Y)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
NOTEQ_IN(s(X), s(Y)) → NOTEQ_IN(X, Y)
From the DPs we obtained the following set of size-change graphs:
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDP
↳ PiDP
U121(X, F, T, N, notEq_out(F, XplusN)) → NOATTACK_IN(X, T, s(N))
U91(X, F, T, N, add_out(F, N, FplusN)) → U101(X, F, T, N, FplusN, notEq_in(X, FplusN))
U111(X, F, T, N, FplusN, add_out(X, N, XplusN)) → U121(X, F, T, N, notEq_in(F, XplusN))
NOATTACK_IN(X, .(F, T), N) → U81(X, F, T, N, notEq_in(X, F))
U81(X, F, T, N, notEq_out(X, F)) → U91(X, F, T, N, add_in(F, N, FplusN))
U101(X, F, T, N, FplusN, notEq_out(X, FplusN)) → U111(X, F, T, N, FplusN, add_in(X, N, XplusN))
queens_in(Y) → U1(Y, perm_in(.(s(0), .(s(s(0)), .(s(s(s(0))), .(s(s(s(s(0)))), .(s(s(s(s(s(0))))), .(s(s(s(s(s(s(0)))))), .(s(s(s(s(s(s(s(0))))))), .(s(s(s(s(s(s(s(s(0)))))))), [])))))))), Y))
perm_in(.(X, Y), .(V, Res)) → U3(X, Y, V, Res, delete_in(V, .(X, Y), Rest))
delete_in(X, .(F, T), .(F, R)) → U5(X, F, T, R, delete_in(X, T, R))
delete_in(X, .(X, Y), Y) → delete_out(X, .(X, Y), Y)
U5(X, F, T, R, delete_out(X, T, R)) → delete_out(X, .(F, T), .(F, R))
U3(X, Y, V, Res, delete_out(V, .(X, Y), Rest)) → U4(X, Y, V, Res, perm_in(Rest, Res))
perm_in([], []) → perm_out([], [])
U4(X, Y, V, Res, perm_out(Rest, Res)) → perm_out(.(X, Y), .(V, Res))
U1(Y, perm_out(.(s(0), .(s(s(0)), .(s(s(s(0))), .(s(s(s(s(0)))), .(s(s(s(s(s(0))))), .(s(s(s(s(s(s(0)))))), .(s(s(s(s(s(s(s(0))))))), .(s(s(s(s(s(s(s(s(0)))))))), [])))))))), Y)) → U2(Y, safe_in(Y))
safe_in(.(X, Y)) → U6(X, Y, noattack_in(X, Y, s(0)))
noattack_in(X, .(F, T), N) → U8(X, F, T, N, notEq_in(X, F))
notEq_in(s(X), s(Y)) → U15(X, Y, notEq_in(X, Y))
notEq_in(s(X), 0) → notEq_out(s(X), 0)
notEq_in(0, s(X)) → notEq_out(0, s(X))
U15(X, Y, notEq_out(X, Y)) → notEq_out(s(X), s(Y))
U8(X, F, T, N, notEq_out(X, F)) → U9(X, F, T, N, add_in(F, N, FplusN))
add_in(s(X), Y, s(Z)) → U14(X, Y, Z, add_in(X, Y, Z))
add_in(0, X, X) → add_out(0, X, X)
U14(X, Y, Z, add_out(X, Y, Z)) → add_out(s(X), Y, s(Z))
U9(X, F, T, N, add_out(F, N, FplusN)) → U10(X, F, T, N, FplusN, notEq_in(X, FplusN))
U10(X, F, T, N, FplusN, notEq_out(X, FplusN)) → U11(X, F, T, N, FplusN, add_in(X, N, XplusN))
U11(X, F, T, N, FplusN, add_out(X, N, XplusN)) → U12(X, F, T, N, notEq_in(F, XplusN))
U12(X, F, T, N, notEq_out(F, XplusN)) → U13(X, F, T, N, noattack_in(X, T, s(N)))
noattack_in(X, [], N) → noattack_out(X, [], N)
U13(X, F, T, N, noattack_out(X, T, s(N))) → noattack_out(X, .(F, T), N)
U6(X, Y, noattack_out(X, Y, s(0))) → U7(X, Y, safe_in(Y))
safe_in([]) → safe_out([])
U7(X, Y, safe_out(Y)) → safe_out(.(X, Y))
U2(Y, safe_out(Y)) → queens_out(Y)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
↳ PiDP
↳ PiDP
U121(X, F, T, N, notEq_out(F, XplusN)) → NOATTACK_IN(X, T, s(N))
U91(X, F, T, N, add_out(F, N, FplusN)) → U101(X, F, T, N, FplusN, notEq_in(X, FplusN))
U111(X, F, T, N, FplusN, add_out(X, N, XplusN)) → U121(X, F, T, N, notEq_in(F, XplusN))
NOATTACK_IN(X, .(F, T), N) → U81(X, F, T, N, notEq_in(X, F))
U81(X, F, T, N, notEq_out(X, F)) → U91(X, F, T, N, add_in(F, N, FplusN))
U101(X, F, T, N, FplusN, notEq_out(X, FplusN)) → U111(X, F, T, N, FplusN, add_in(X, N, XplusN))
notEq_in(s(X), s(Y)) → U15(X, Y, notEq_in(X, Y))
notEq_in(s(X), 0) → notEq_out(s(X), 0)
notEq_in(0, s(X)) → notEq_out(0, s(X))
add_in(s(X), Y, s(Z)) → U14(X, Y, Z, add_in(X, Y, Z))
add_in(0, X, X) → add_out(0, X, X)
U15(X, Y, notEq_out(X, Y)) → notEq_out(s(X), s(Y))
U14(X, Y, Z, add_out(X, Y, Z)) → add_out(s(X), Y, s(Z))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
↳ PiDP
↳ PiDP
↳ PiDP
U111(X, F, T, N, add_out(XplusN)) → U121(X, T, N, notEq_in(F, XplusN))
U81(X, F, T, N, notEq_out) → U91(X, F, T, N, add_in(F, N))
U91(X, F, T, N, add_out(FplusN)) → U101(X, F, T, N, notEq_in(X, FplusN))
U121(X, T, N, notEq_out) → NOATTACK_IN(X, T, s(N))
U101(X, F, T, N, notEq_out) → U111(X, F, T, N, add_in(X, N))
NOATTACK_IN(X, .(F, T), N) → U81(X, F, T, N, notEq_in(X, F))
notEq_in(s(X), s(Y)) → U15(notEq_in(X, Y))
notEq_in(s(X), 0) → notEq_out
notEq_in(0, s(X)) → notEq_out
add_in(s(X), Y) → U14(add_in(X, Y))
add_in(0, X) → add_out(X)
U15(notEq_out) → notEq_out
U14(add_out(Z)) → add_out(s(Z))
notEq_in(x0, x1)
add_in(x0, x1)
U15(x0)
U14(x0)
From the DPs we obtained the following set of size-change graphs:
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDP
SAFE_IN(.(X, Y)) → U61(X, Y, noattack_in(X, Y, s(0)))
U61(X, Y, noattack_out(X, Y, s(0))) → SAFE_IN(Y)
queens_in(Y) → U1(Y, perm_in(.(s(0), .(s(s(0)), .(s(s(s(0))), .(s(s(s(s(0)))), .(s(s(s(s(s(0))))), .(s(s(s(s(s(s(0)))))), .(s(s(s(s(s(s(s(0))))))), .(s(s(s(s(s(s(s(s(0)))))))), [])))))))), Y))
perm_in(.(X, Y), .(V, Res)) → U3(X, Y, V, Res, delete_in(V, .(X, Y), Rest))
delete_in(X, .(F, T), .(F, R)) → U5(X, F, T, R, delete_in(X, T, R))
delete_in(X, .(X, Y), Y) → delete_out(X, .(X, Y), Y)
U5(X, F, T, R, delete_out(X, T, R)) → delete_out(X, .(F, T), .(F, R))
U3(X, Y, V, Res, delete_out(V, .(X, Y), Rest)) → U4(X, Y, V, Res, perm_in(Rest, Res))
perm_in([], []) → perm_out([], [])
U4(X, Y, V, Res, perm_out(Rest, Res)) → perm_out(.(X, Y), .(V, Res))
U1(Y, perm_out(.(s(0), .(s(s(0)), .(s(s(s(0))), .(s(s(s(s(0)))), .(s(s(s(s(s(0))))), .(s(s(s(s(s(s(0)))))), .(s(s(s(s(s(s(s(0))))))), .(s(s(s(s(s(s(s(s(0)))))))), [])))))))), Y)) → U2(Y, safe_in(Y))
safe_in(.(X, Y)) → U6(X, Y, noattack_in(X, Y, s(0)))
noattack_in(X, .(F, T), N) → U8(X, F, T, N, notEq_in(X, F))
notEq_in(s(X), s(Y)) → U15(X, Y, notEq_in(X, Y))
notEq_in(s(X), 0) → notEq_out(s(X), 0)
notEq_in(0, s(X)) → notEq_out(0, s(X))
U15(X, Y, notEq_out(X, Y)) → notEq_out(s(X), s(Y))
U8(X, F, T, N, notEq_out(X, F)) → U9(X, F, T, N, add_in(F, N, FplusN))
add_in(s(X), Y, s(Z)) → U14(X, Y, Z, add_in(X, Y, Z))
add_in(0, X, X) → add_out(0, X, X)
U14(X, Y, Z, add_out(X, Y, Z)) → add_out(s(X), Y, s(Z))
U9(X, F, T, N, add_out(F, N, FplusN)) → U10(X, F, T, N, FplusN, notEq_in(X, FplusN))
U10(X, F, T, N, FplusN, notEq_out(X, FplusN)) → U11(X, F, T, N, FplusN, add_in(X, N, XplusN))
U11(X, F, T, N, FplusN, add_out(X, N, XplusN)) → U12(X, F, T, N, notEq_in(F, XplusN))
U12(X, F, T, N, notEq_out(F, XplusN)) → U13(X, F, T, N, noattack_in(X, T, s(N)))
noattack_in(X, [], N) → noattack_out(X, [], N)
U13(X, F, T, N, noattack_out(X, T, s(N))) → noattack_out(X, .(F, T), N)
U6(X, Y, noattack_out(X, Y, s(0))) → U7(X, Y, safe_in(Y))
safe_in([]) → safe_out([])
U7(X, Y, safe_out(Y)) → safe_out(.(X, Y))
U2(Y, safe_out(Y)) → queens_out(Y)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
↳ PiDP
SAFE_IN(.(X, Y)) → U61(X, Y, noattack_in(X, Y, s(0)))
U61(X, Y, noattack_out(X, Y, s(0))) → SAFE_IN(Y)
noattack_in(X, .(F, T), N) → U8(X, F, T, N, notEq_in(X, F))
noattack_in(X, [], N) → noattack_out(X, [], N)
U8(X, F, T, N, notEq_out(X, F)) → U9(X, F, T, N, add_in(F, N, FplusN))
notEq_in(s(X), s(Y)) → U15(X, Y, notEq_in(X, Y))
notEq_in(s(X), 0) → notEq_out(s(X), 0)
notEq_in(0, s(X)) → notEq_out(0, s(X))
U9(X, F, T, N, add_out(F, N, FplusN)) → U10(X, F, T, N, FplusN, notEq_in(X, FplusN))
U15(X, Y, notEq_out(X, Y)) → notEq_out(s(X), s(Y))
add_in(s(X), Y, s(Z)) → U14(X, Y, Z, add_in(X, Y, Z))
add_in(0, X, X) → add_out(0, X, X)
U10(X, F, T, N, FplusN, notEq_out(X, FplusN)) → U11(X, F, T, N, FplusN, add_in(X, N, XplusN))
U14(X, Y, Z, add_out(X, Y, Z)) → add_out(s(X), Y, s(Z))
U11(X, F, T, N, FplusN, add_out(X, N, XplusN)) → U12(X, F, T, N, notEq_in(F, XplusN))
U12(X, F, T, N, notEq_out(F, XplusN)) → U13(X, F, T, N, noattack_in(X, T, s(N)))
U13(X, F, T, N, noattack_out(X, T, s(N))) → noattack_out(X, .(F, T), N)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
↳ PiDP
↳ PiDP
SAFE_IN(.(X, Y)) → U61(Y, noattack_in(X, Y, s(0)))
U61(Y, noattack_out) → SAFE_IN(Y)
noattack_in(X, .(F, T), N) → U8(X, F, T, N, notEq_in(X, F))
noattack_in(X, [], N) → noattack_out
U8(X, F, T, N, notEq_out) → U9(X, F, T, N, add_in(F, N))
notEq_in(s(X), s(Y)) → U15(notEq_in(X, Y))
notEq_in(s(X), 0) → notEq_out
notEq_in(0, s(X)) → notEq_out
U9(X, F, T, N, add_out(FplusN)) → U10(X, F, T, N, notEq_in(X, FplusN))
U15(notEq_out) → notEq_out
add_in(s(X), Y) → U14(add_in(X, Y))
add_in(0, X) → add_out(X)
U10(X, F, T, N, notEq_out) → U11(X, F, T, N, add_in(X, N))
U14(add_out(Z)) → add_out(s(Z))
U11(X, F, T, N, add_out(XplusN)) → U12(X, T, N, notEq_in(F, XplusN))
U12(X, T, N, notEq_out) → U13(noattack_in(X, T, s(N)))
U13(noattack_out) → noattack_out
noattack_in(x0, x1, x2)
U8(x0, x1, x2, x3, x4)
notEq_in(x0, x1)
U9(x0, x1, x2, x3, x4)
U15(x0)
add_in(x0, x1)
U10(x0, x1, x2, x3, x4)
U14(x0)
U11(x0, x1, x2, x3, x4)
U12(x0, x1, x2, x3)
U13(x0)
From the DPs we obtained the following set of size-change graphs:
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
DELETE_IN(X, .(F, T), .(F, R)) → DELETE_IN(X, T, R)
queens_in(Y) → U1(Y, perm_in(.(s(0), .(s(s(0)), .(s(s(s(0))), .(s(s(s(s(0)))), .(s(s(s(s(s(0))))), .(s(s(s(s(s(s(0)))))), .(s(s(s(s(s(s(s(0))))))), .(s(s(s(s(s(s(s(s(0)))))))), [])))))))), Y))
perm_in(.(X, Y), .(V, Res)) → U3(X, Y, V, Res, delete_in(V, .(X, Y), Rest))
delete_in(X, .(F, T), .(F, R)) → U5(X, F, T, R, delete_in(X, T, R))
delete_in(X, .(X, Y), Y) → delete_out(X, .(X, Y), Y)
U5(X, F, T, R, delete_out(X, T, R)) → delete_out(X, .(F, T), .(F, R))
U3(X, Y, V, Res, delete_out(V, .(X, Y), Rest)) → U4(X, Y, V, Res, perm_in(Rest, Res))
perm_in([], []) → perm_out([], [])
U4(X, Y, V, Res, perm_out(Rest, Res)) → perm_out(.(X, Y), .(V, Res))
U1(Y, perm_out(.(s(0), .(s(s(0)), .(s(s(s(0))), .(s(s(s(s(0)))), .(s(s(s(s(s(0))))), .(s(s(s(s(s(s(0)))))), .(s(s(s(s(s(s(s(0))))))), .(s(s(s(s(s(s(s(s(0)))))))), [])))))))), Y)) → U2(Y, safe_in(Y))
safe_in(.(X, Y)) → U6(X, Y, noattack_in(X, Y, s(0)))
noattack_in(X, .(F, T), N) → U8(X, F, T, N, notEq_in(X, F))
notEq_in(s(X), s(Y)) → U15(X, Y, notEq_in(X, Y))
notEq_in(s(X), 0) → notEq_out(s(X), 0)
notEq_in(0, s(X)) → notEq_out(0, s(X))
U15(X, Y, notEq_out(X, Y)) → notEq_out(s(X), s(Y))
U8(X, F, T, N, notEq_out(X, F)) → U9(X, F, T, N, add_in(F, N, FplusN))
add_in(s(X), Y, s(Z)) → U14(X, Y, Z, add_in(X, Y, Z))
add_in(0, X, X) → add_out(0, X, X)
U14(X, Y, Z, add_out(X, Y, Z)) → add_out(s(X), Y, s(Z))
U9(X, F, T, N, add_out(F, N, FplusN)) → U10(X, F, T, N, FplusN, notEq_in(X, FplusN))
U10(X, F, T, N, FplusN, notEq_out(X, FplusN)) → U11(X, F, T, N, FplusN, add_in(X, N, XplusN))
U11(X, F, T, N, FplusN, add_out(X, N, XplusN)) → U12(X, F, T, N, notEq_in(F, XplusN))
U12(X, F, T, N, notEq_out(F, XplusN)) → U13(X, F, T, N, noattack_in(X, T, s(N)))
noattack_in(X, [], N) → noattack_out(X, [], N)
U13(X, F, T, N, noattack_out(X, T, s(N))) → noattack_out(X, .(F, T), N)
U6(X, Y, noattack_out(X, Y, s(0))) → U7(X, Y, safe_in(Y))
safe_in([]) → safe_out([])
U7(X, Y, safe_out(Y)) → safe_out(.(X, Y))
U2(Y, safe_out(Y)) → queens_out(Y)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
DELETE_IN(X, .(F, T), .(F, R)) → DELETE_IN(X, T, R)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
↳ PiDP
DELETE_IN(.(F, T)) → DELETE_IN(T)
From the DPs we obtained the following set of size-change graphs:
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
PERM_IN(.(X, Y), .(V, Res)) → U31(X, Y, V, Res, delete_in(V, .(X, Y), Rest))
U31(X, Y, V, Res, delete_out(V, .(X, Y), Rest)) → PERM_IN(Rest, Res)
queens_in(Y) → U1(Y, perm_in(.(s(0), .(s(s(0)), .(s(s(s(0))), .(s(s(s(s(0)))), .(s(s(s(s(s(0))))), .(s(s(s(s(s(s(0)))))), .(s(s(s(s(s(s(s(0))))))), .(s(s(s(s(s(s(s(s(0)))))))), [])))))))), Y))
perm_in(.(X, Y), .(V, Res)) → U3(X, Y, V, Res, delete_in(V, .(X, Y), Rest))
delete_in(X, .(F, T), .(F, R)) → U5(X, F, T, R, delete_in(X, T, R))
delete_in(X, .(X, Y), Y) → delete_out(X, .(X, Y), Y)
U5(X, F, T, R, delete_out(X, T, R)) → delete_out(X, .(F, T), .(F, R))
U3(X, Y, V, Res, delete_out(V, .(X, Y), Rest)) → U4(X, Y, V, Res, perm_in(Rest, Res))
perm_in([], []) → perm_out([], [])
U4(X, Y, V, Res, perm_out(Rest, Res)) → perm_out(.(X, Y), .(V, Res))
U1(Y, perm_out(.(s(0), .(s(s(0)), .(s(s(s(0))), .(s(s(s(s(0)))), .(s(s(s(s(s(0))))), .(s(s(s(s(s(s(0)))))), .(s(s(s(s(s(s(s(0))))))), .(s(s(s(s(s(s(s(s(0)))))))), [])))))))), Y)) → U2(Y, safe_in(Y))
safe_in(.(X, Y)) → U6(X, Y, noattack_in(X, Y, s(0)))
noattack_in(X, .(F, T), N) → U8(X, F, T, N, notEq_in(X, F))
notEq_in(s(X), s(Y)) → U15(X, Y, notEq_in(X, Y))
notEq_in(s(X), 0) → notEq_out(s(X), 0)
notEq_in(0, s(X)) → notEq_out(0, s(X))
U15(X, Y, notEq_out(X, Y)) → notEq_out(s(X), s(Y))
U8(X, F, T, N, notEq_out(X, F)) → U9(X, F, T, N, add_in(F, N, FplusN))
add_in(s(X), Y, s(Z)) → U14(X, Y, Z, add_in(X, Y, Z))
add_in(0, X, X) → add_out(0, X, X)
U14(X, Y, Z, add_out(X, Y, Z)) → add_out(s(X), Y, s(Z))
U9(X, F, T, N, add_out(F, N, FplusN)) → U10(X, F, T, N, FplusN, notEq_in(X, FplusN))
U10(X, F, T, N, FplusN, notEq_out(X, FplusN)) → U11(X, F, T, N, FplusN, add_in(X, N, XplusN))
U11(X, F, T, N, FplusN, add_out(X, N, XplusN)) → U12(X, F, T, N, notEq_in(F, XplusN))
U12(X, F, T, N, notEq_out(F, XplusN)) → U13(X, F, T, N, noattack_in(X, T, s(N)))
noattack_in(X, [], N) → noattack_out(X, [], N)
U13(X, F, T, N, noattack_out(X, T, s(N))) → noattack_out(X, .(F, T), N)
U6(X, Y, noattack_out(X, Y, s(0))) → U7(X, Y, safe_in(Y))
safe_in([]) → safe_out([])
U7(X, Y, safe_out(Y)) → safe_out(.(X, Y))
U2(Y, safe_out(Y)) → queens_out(Y)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
PERM_IN(.(X, Y), .(V, Res)) → U31(X, Y, V, Res, delete_in(V, .(X, Y), Rest))
U31(X, Y, V, Res, delete_out(V, .(X, Y), Rest)) → PERM_IN(Rest, Res)
delete_in(X, .(F, T), .(F, R)) → U5(X, F, T, R, delete_in(X, T, R))
delete_in(X, .(X, Y), Y) → delete_out(X, .(X, Y), Y)
U5(X, F, T, R, delete_out(X, T, R)) → delete_out(X, .(F, T), .(F, R))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ RuleRemovalProof
U31(delete_out(V, Rest)) → PERM_IN(Rest)
PERM_IN(.(X, Y)) → U31(delete_in(.(X, Y)))
delete_in(.(F, T)) → U5(F, delete_in(T))
delete_in(.(X, Y)) → delete_out(X, Y)
U5(F, delete_out(X, R)) → delete_out(X, .(F, R))
delete_in(x0)
U5(x0, x1)
PERM_IN(.(X, Y)) → U31(delete_in(.(X, Y)))
delete_in(.(X, Y)) → delete_out(X, Y)
POL(.(x1, x2)) = 1 + x1 + x2
POL(PERM_IN(x1)) = 2 + 2·x1
POL(U31(x1)) = x1
POL(U5(x1, x2)) = 2 + 2·x1 + x2
POL(delete_in(x1)) = 1 + 2·x1
POL(delete_out(x1, x2)) = 2 + 2·x1 + 2·x2
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ RuleRemovalProof
↳ QDP
↳ DependencyGraphProof
U31(delete_out(V, Rest)) → PERM_IN(Rest)
delete_in(.(F, T)) → U5(F, delete_in(T))
U5(F, delete_out(X, R)) → delete_out(X, .(F, R))
delete_in(x0)
U5(x0, x1)